This disclosure relates generally to the field of computer programming. More particularly, but not by way of limitation, it relates to a programming interface and language for programming kernels for execution on a graphical processor unit.
Graphics processor units (GPUs) have become more and more important for processing data-parallel graphics tasks. Developers have also recognized that non-graphics data-parallel tasks can be handled by GPUs, taking advantage of their massive parallel capabilities. Vendors and standards organizations have created application programming interfaces (APIs) that make graphics data-parallel tasks easier to program. Similarly, vendors and standards organizations have created different APIs that make non-graphics data-parallel tasks easier to program. However, these high-level APIs have resulted in performance degradation, as well as making combining graphics and computing data-parallel tasks less convenient, because of the need to use different APIs for each type of task.